<?php if (! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 错误消息 类库
 *
 * 1、存储用户定义的错误信息
 * 2、返回用户定义的错误信息
 * 建议系统运行时自动加载进来(application/config/autoload.php)
 */

class Error {

    protected $_error = array();

    public function __construct() {
        log_message('debug', 'Error Class Initialized');
    }

    /**
     * 使得CI超级全局对象可以直接使用
     *
     * @param	$key
     * @return	mixed
     */
    public function __get($key) {
        $CI = &get_instance();
        return $CI->$key;
    }

    /**
     * 添加错误信息
     *
     * 第二参数 $var 讲解:
     * <pre>
     * 比如languag中存在一条:
     * $lang['login_error_pwd'] = '帐号或密码错误,您还可以尝试{num}次';
     * 返回该条错误的时候
     * return $this->error->set('USER:login_error_pwd', array('{num}' => 5));
     * </pre>
     *
     * @param string $error 错误信息
     * @param array $var 错误信息中包含的错误输出变量，格式如{key}=>'value',在message中存在{key}
     * @return obj
     */
    public function set_error($error, $var = array()) {
        if (! $error) return false;
        $tmp = new stdClass();
        $tmp->msg = $var ? array($error, $var) : $error;
        $this->_error[] = $tmp;
        return $this;
    }

    /**
     * 获取错误信息
     *
     * @param boolean $is_all 是否返回所有的错误信息
     * @return string
     */
    public function get_error($is_all = false) {
        if ($is_all !== false) return $this->_error;
        $tmp = end($this->_error);
        return $tmp ? $tmp->msg : '';
    }
}

/* End of file Error.php */
/* Location: ./application/libraries/Error.php */
